package com.accenture.agreco.beans.impl;

import com.accenture.agreco.beans.Scuola;
import com.accenture.agreco.beans.Classe;
import com.accenture.agreco.beans.Persona;
import com.accenture.agreco.qualifiers.Adulto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

import java.util.Collection;
import java.util.Map;

/**
 * User: a.greco
 * Date: 11/10/12
 * Time: 17.23
 */
public class ClasseImpl implements Classe {

    private int anno;
    private char sezione;
    private Collection<StudenteImpl> studenti;
    private Map<String, ProfessoreImpl> professori;
    //@Autowired @Qualifier("capoclasse") private Persona coordinatore;
    @Autowired @Adulto private Persona coordinatore;
    @Autowired(required = false) private Scuola scuola;


    public String getId(){
        return ""+getAnno()+getSezione();
    }

    public int getAnno() {
        return anno;
    }

    public void setAnno(int anno) {
        this.anno = anno;
    }

    public char getSezione() {
        return sezione;
    }

    public void setSezione(char sezione) {
        this.sezione = sezione;
    }

    public Collection<StudenteImpl> getStudenti() {
        return studenti;
    }

    public void setStudenti(Collection<StudenteImpl> studenti) {
        this.studenti = studenti;
    }

    public Map<String, ProfessoreImpl> getProfessori() {
        return professori;
    }

    public void setProfessori(Map<String, ProfessoreImpl> professori) {
        this.professori = professori;
    }

    public Persona getCoordinatore() {
        return coordinatore;
    }

    public void setCoordinatore(Persona coordinatore) {
        this.coordinatore = coordinatore;
    }

    public Scuola getScuola() {
        return scuola;
    }

    public void setScuola(Scuola scuola) {
        this.scuola = scuola;
    }

    public String toString(){
        String out = "Classe: "+anno+sezione;

        out += "\nStudenti =>";
        if(studenti != null && studenti.size() > 0) {
            for(StudenteImpl st : studenti) {
                out += "\n\t" + st.toString();
            }
        }

        out += "\nProfessori =>";
        if(professori != null && professori.size() >0) {
            for(Map.Entry<String, ProfessoreImpl> entry : professori.entrySet()){
                out += "\n\t" + entry.getValue().toString() +"  ==> Insegna: "+ entry.getKey();
            }
        }

        out += "\nCoordinatore =>";
        out += "\n\t"+coordinatore;

        out += "\nScoula =>";
        out += "\n\t"+scuola;

        return out;
    }
}
